package com.neusoft.gene.nep.grid.controller;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.neusoft.gene.nep.entity.CommonResult;
import com.neusoft.gene.nep.grid.bufferedio.BufferedFileIo;
import com.neusoft.gene.nep.grid.entity.Grid;
import com.neusoft.gene.nep.grid.service.IGridService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.*;


/**
 * @Description: TODO  区域网格信息 前端控制器
 * 处理关于区域网格信息的请求
 * @author: 君醉
 * @date: 2024/6/19 15:03
*/

//@RestController和@RequestMapping：这些注解指示该类是一个控制器，并定义了处理请求的基本路径。
@RestController
@RequestMapping("/grid")
@CrossOrigin("*")
public class GridController {
    @Autowired
    IGridService gridService;


    //@GetMapping和@CrossOrigin：这些注解定义了处理HTTP GET请求的方法，并允许跨域请求。
    @GetMapping("s/all/tree")
    public  String  selectAllGridTree() throws IOException {
        //处理获取所有网格信息的请求。
        String json = null;
        File file =new File("d:\\grid.json");
        if(file.exists()){
            //从文件中读取缓存的JSON数据
           json = BufferedFileIo.readStringFromFile();
        }else {
            //调用gridService.selectAllGridTree()方法获取数据，并将结果写入文件
            CommonResult<Grid> result =  gridService.selectAllGridTree();
            if(result.getCode() == 200){
                ObjectMapper mapper = new ObjectMapper();
                json = mapper.writeValueAsString(result );
                BufferedFileIo.writeStringToFile(json);

            }
        }
        return  json;
    }

    @GetMapping("s/pid/{pid}")
    public CommonResult selectGridByPid(@PathVariable("pid")  Integer pid ) {
        //处理根据父级ID获取网格信息的请求。
        return  gridService.selectGridByPid(pid);
    }

    @PostMapping("add")
    public CommonResult addGrid( @RequestBody Grid grid) {

        //处理添加网格信息的请求。
        return  gridService.addGrid(grid);
    }

}
